﻿using System.Collections.Generic;
using System.Linq;
using System.Web;
using Negocio = PSE.Tools.CadastroMensagens.Negocio;
using PSE.Tools.Util.Entidades;
using System;

namespace PSE.Tools.CadastroMensagens.Apresentacao
{
    public class Resources
    {
        private IApresentacao _apresentacao;
        private Negocio.Resources _negocioResources;
        public Resources(IApresentacao apresentacao, Negocio.Resources negocioResources)
        {
            _apresentacao = apresentacao;
            _negocioResources = negocioResources;
        }

        public Entidades.Resource Obter(int id)
        {
            try
            {
                return _negocioResources.ObterPorId(id);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
                return null;
            }            
        }

        public IList<Entidades.Resource> Lista(Entidades.ResourceFiltro filtro)
        {
            try
            {
                return _negocioResources.Selecionar(filtro);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
                return null;
            }
        }

        public bool Inserir(Entidades.Resource resource)
        {
            bool retorno = false;
            try
            {
                resource.CriadoPor = "p-angsilva";
                _negocioResources.Inserir(resource);
                _apresentacao.EnviarMensagem("Resource Inserido com Sucesso");
                retorno = true;
            }
            catch (ValidacaoEntidadeException ex)
            {
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
            return retorno;
        }

        public bool Atualizar(Entidades.Resource resource)
        {
            bool retorno = false;
            try
            {
                resource.AtualizadoPor = "p-angsilva";
                _negocioResources.Atualizar(resource);
                _apresentacao.EnviarMensagem("Resource Atualizado com Sucesso");
                retorno = true;
            }
            catch (ValidacaoEntidadeException ex)
            {
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
            return retorno;
        }

        public bool Excluir(Entidades.Resource resource)
        {
            bool retorno = false;
            try
            {
                _negocioResources.Inserir(resource);
                _apresentacao.EnviarMensagem("Resource Excluído com Sucesso");
                retorno = true;
            }
            catch (ValidacaoEntidadeException ex)
            {
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
            return retorno;
        }
    }
}